/*
 * Copyright (c) 2018-2999 湖南洛云网络科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 */

package com.yami.shop.groupbuy.comment.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.Product;
import com.yami.shop.bean.param.OfflineHandleEventAuditParam;
import com.yami.shop.common.util.PageParam;
import com.yami.shop.groupbuy.comment.api.dto.ApiGroupActivityDto;
import com.yami.shop.groupbuy.comment.dto.GroupActivityDto;
import com.yami.shop.groupbuy.comment.model.GroupActivity;

import java.util.List;

/**
 * 拼团活动表
 *
 * @author LGH
 * @date 2019-08-27 17:55:57
 */
public interface GroupActivityService extends IService<GroupActivity> {


    /**
     * 跟新拼团活动为已删除状态
     *
     * @param groupActivityId 团购活动id
     */
    void updateToDelete(Long groupActivityId);

    /**
     * 获取分页列表
     *
     * @param page             分页对象
     * @param groupActivityDto 拼团活动
     * @return 分页对象
     */
    IPage<GroupActivityDto> getGroupActivityPage(PageParam<GroupActivityDto> page, GroupActivityDto groupActivityDto);

    /**
     * 获取拼团活动信息
     *
     * @param groupActivityId 活动ID
     * @param prodId          商品ID
     * @return Api活动对象
     */
    ApiGroupActivityDto getApiGroupActivityInfo(Long groupActivityId, Long prodId);

    /**
     * 失效活动
     *
     * @param groupActivity 团购活动信息
     * @return  团购活动商品列表
     */
    List<Product> invalidGroupActivity(GroupActivity groupActivity);

    /**
     * 平台  -- 下架活动
     *
     * @param groupActivity 团购活动信息
     * @param offlineReason 下线原因
     * @param sysUserId 处理人id
     */
    void offline(GroupActivity groupActivity, String offlineReason, Long sysUserId);

    /**
     * 平台 -- 审核活动
     *
     * @param offlineHandleEventAuditParam 审核信息
     * @param sysUserId 处理人id
     */
    void auditGroupActivity(OfflineHandleEventAuditParam offlineHandleEventAuditParam, Long sysUserId);

    /**
     * 审核申请
     *
     * @param eventId 下线事件id
     * @param activityId 团购活动id
     * @param reapplyReason 申请理由
     */
    void auditApply(Long eventId, Long activityId, String reapplyReason);

    /**
     * 根据团购活动id列表，批量改变商品类型
     *
     * @param groupActivityIds 团购活动id列表
     */
    void changeProdTypeByGroupActivityIdList(List<Long> groupActivityIds);
}
